【書評】やり方のやり方を学び、自分たちにあったソフトウェア開発をしよう「モダン・ソフトウェアエンジニアリング」
CX事業本部の阿部です。
タイトルは、本書で紹介している手法がフォーカスしているところを強調するため、あえて乱暴にまとめてみました。というか個人の感想ですが、メタな領域の本なので、最初のとっかかりはこのくらい乱暴に理解して読み始めないと辛いと思います。
というわけで、「モダン・ソフトウェアエンジニアリング」という本を読みました。書評書く前提で書籍をいただいたのが9月頃なのでかなり時間かかってしまいましたね。大変申し訳なく。。。
どのような本か?
本書はソフトウェア開発で必要な活動や要素を抽象化して、今まで(そしてこれからも)種々出てくる開発手法やプラクティスをプロジェクトの違いを超えて適用するための共通言語と基盤について書かれたものです。本書で説明されるこの基盤は、Essenceという名称で公開されている手法です。
Essenceについて
ソフトウェアエンジニアリングが範疇とするものは、プログラミングや技術だけでなく、インプットとする要求やデプロイ、運用、保守、それらを実務として取り組むチームの話題まで幅広く含まれます。今まで出てきた様々な手法やプラクティスは、これらの領域にフォーカスしていますが、それぞれ個別に取り組まれているために以下のような課題を抱えていました。
- 手法ごとに用語が違う
- 手法によっては絶対的なルールがある(本書では「手法の監獄」と表現)
とはいえ、各種手法やプラクティスではカバーできなかったり、うまく解決できなかったりする事象があるのは世の常で、そこに対して別の手法やプラクティスを導入して合わせて使いたい、ということはあると思います。Essenceがフォーカスしているのはまさにその部分です。
- ソフトウェア開発に必要な全ての要素、活動を俯瞰する言語を定義
- 手法やプラクティスをその言語で記述するための基盤を提供
概要を大雑把に掴むのであれば、本書の翻訳をされた角さんのスライドがわかりやすいと思います。
利点は何か?
Essenceの目的は、様々な手法を組み合わせられるように用語やフォーカスしている範囲を統一して、現場でより良いやり方を作り上げていくことにあります。ソフトウェア開発全体を見渡す抽象的なアクティビティなどのセットを作ることで、利用者に視点を提供し、現時点で足りないところを把握することに役立ちます。また、足りないところが可視化されれば、その中からどこに注力して対応していくか検討することもできます。
すぐに活かせるか?
と、利点については一歩引いて書いてしまいましたが、正直すぐに活かすのは難しいと思いました。
個人的には、パタン・ランゲージのような記述の軽さがあると良いと感じます(あれはあれで運用する側がわかっている必要がある手法であるとも感じています)。先に挙げた角さんのスライドでも「UMLと同じくらいの希望と絶望を持つといいと思う」と強調されていましたが、まさにその通りだと思います。形式化で満足する人もそれなりに出そう。
ただ、本書が提示している課題と、それに対してEssenceという形でアプローチをしたことについては、長らく放置されていた(もしくは解決されなかった)部分だと思うので、これをきっかけに議論や実践が進むと良いな、と思いました。
で、本当に導入事例多いんでしたっけ?私、この本で初めてEssence知ったんですけど。。。